package com.litidea.dao;

import java.util.List;
import java.util.Map;

import net.sf.json.JSONObject;

import com.litidea.dataobjects.ChangeTypeDO;
import com.litidea.dataobjects.ChangeTypeTestItemsDO;
import com.litidea.dataobjects.TestItemDO;

public interface BasicDataDAO {
	/**
	 * 获取测试项目信息分页列表
	 * 
	 * @param params
	 * @return
	 */
	public JSONObject getTestItemsPageList(Map<String, String> params);
	
	/**
	 * 获取验测试项目列表
	 * @param params
	 * @return
	 */
	public List<TestItemDO> getTestItems(Map<String, String> params);

	/**
	 * 添加测试项目
	 * 
	 * @param params
	 * @return
	 */
	public String addNewTestItem(Map<String, String> params);

	/**
	 * 编辑测试项目
	 * 
	 * @param params
	 * @return
	 */
	public String editTestItem(Map<String, String> params);

	/**
	 * 删除测试项目
	 * 
	 * @param params
	 * @return
	 */
	public String delTestItem(Integer id);
	
	/**
	 * 获取变更类型信息分页列表
	 * 
	 * @param params
	 * @return
	 */
	public JSONObject getChangeTypesPageList(Map<String, String> params);
	
	/**
	 * 获取变更类别列表
	 * @param params
	 * @return
	 */
	public List<ChangeTypeDO> getChangeTypes(Map<String, String> params);

	/**
	 * 添加变更类型
	 * 
	 * @param params
	 * @return
	 */
	public String addNewChangeType(Map<String, String> params);

	/**
	 * 编辑变更类型
	 * 
	 * @param params
	 * @return
	 */
	public String editChangeType(Map<String, String> params);

	/**
	 * 删除变更类型
	 * 
	 * @param params
	 * @return
	 */
	public String delChangeType(Integer id);
	
	/**
	 * 获取没有分配给变更类型的实验项目
	 * @param changeId
	 * @return
	 */
	public List<TestItemDO> getNotChangeTypeTestItems(Integer changeId);
	
	/**
	 * 获取已经分配给变更类型的实验项目
	 * @param changeId
	 * @return
	 */
	public List<TestItemDO> getChangeTypeTestItemss(Integer changeId);
	
	/**
	 * 保存变更类型的实验项目
	 * @param changeTypeId
	 * @param testItems
	 */
	public void saveChangeTypeTestItems(Integer changeTypeId, String[] testItems);
	
	/**
	 * 获取已经分配给变更类型的实验项目
	 * @param changeId
	 * @return
	 */
	public List<ChangeTypeTestItemsDO> getTestItemssByChangeId(Integer changeId);
	
	/**
	 * 更新是否必须
	 * @param params
	 */
	public void updateIsMust(Map<String, String> params);
	
	/**
	 * 发布变更类型
	 * @param changeId
	 */
	public void isPublish(Map<String, String> params);
}
